#ifndef ENEMIGO_H
#define ENEMIGO_H
#include "server_Personaje.h"
#include "server_IOcupante.h"
#include <string>
#include <vector>


using std::vector;
using std::string;

class Enemigo : public Personaje {
protected:
    /* Puntos que se otorgan por matarlo. */
    int puntosOtorgados;
    /* Cantidad de explosiones que puede soportar antes de morir. */
    int explosionesRestantes;
    /* Indica si el enemigo esta escondido en una caja o no. Si esta escondido,
     * no se mueve hasta que se rompa la caja y no le afecta la explosion. */
    bool escondido;
    /* Disminuye la cantidad de explosiones restantes soportadas. Si llega
     * a cero, lo declara muerto. */
    void disminuirExplosionesRestantes();
    int movimientosParaCambiarDeDireccion;
    vector<string> direcciones;

public:
    /* Constructor */
    Enemigo();
    /* Destructor */
    ~Enemigo();
    /* Devuelve la cantidad de puntos otorgados por matarlo */
    int getPuntosOtorgados();
    /* Devuelve True si esta escondido o False en caso contrario. */
    bool estaEscondido();
    /* Colision. */
    void colisionarCon(IOcupante* ocupante);
    void colisionarConBombaPlanta();
    void colisionarConBomberman(IOcupante* bomberman);
    void recibirExplosion();
    virtual void setDireccion();
    void esconder();
    void mostrar();
};

#endif
